import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'
Vue.use(VueRouter)


let originPush = VueRouter.prototype.push
VueRouter.prototype.push = function (location, resolve, reject) { //这是咱的push
  if (resolve === undefined && reject === undefined) { //说明成功和失败的都没给我
    // this ==> 路由器实例化对象
    // 咱么这个push 里面的逻辑全是用人家原先originPush的这个(跳转 返回值)
    return originPush.call(this, location).catch(() => { })
  } else { //可能给了我一个回调函数 也可能给了我两个回调函数
    return originPush.call(this, location, resolve, reject)
  }
}
let originReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function (location, resolve, reject) { //这是咱的push
  if (resolve === undefined && reject === undefined) { //说明成功和失败的都没给我传递
    // 可不敢普通函数调用 因为这样人家原先push里面的this就变成window了
    // this ==> 路由器实例化对象
    // 咱么这个push 里面的逻辑全是用人家原先originPush的这个(跳转 返回值)
    return originReplace.call(this, location).catch(() => { })
  } else { //可能给了我一个回调函数 也可能给了我两个回调函数
    return originReplace.call(this, location, resolve, reject)
  }
}

const router = new VueRouter({
  routes,
  scrollBehavior() {
    return {
      y: 0
    }
  }
})

export default router